
using System;
using System.Collections.Generic;

namespace Subsync
{
	/// <summary>
	/// Author: Steven Goh Jian Wen
	/// </summary>
    abstract public class App
    {
        //delegate to store the function pointer
        public delegate void initPointer(Dictionary<string, List<object>> s);

        /// <summary>
        /// To tell the CLI which tokens to look out for
        /// </summary>
        /// <returns>
        /// A <see cref="Dictionary"/>
        /// </returns>
        public abstract Dictionary<string, List<object>> GetTokens();

        /// <summary>
        /// Points tokens to the right function so it can dispatch.
        /// </summary>
        /// <returns>
        /// A <see cref="List"/>
        /// </returns>
        public abstract List<KeyValuePair<string, initPointer>> GetInitPointers();
    }
}